# 自动打包项目，生成admin2文件夹

# 定义文本颜色,参考：https://stackoverflow.com/a/5947802
GREEN='\033[1;32m' # Green color code
RED='\033[1;31m'   # Red color code
NC='\033[0m' # No Color
demo_dir=/www/wwwroot/udyk-docker/www
demo_compose=/www/wwwroot/udyk-docker/docker-compose.yml
# 注意，这里的node版本需要和项目中的node版本一致，否则会出现编译失败的情况
# 参考：https://stackoverflow.com/a/67487338
nodeversion=14.16.1

function error_log(){
    echo $1 && exit 1
}

function init() {
    # 判断是否安装了zip命令
    if ! command -v zip &> /dev/null
    then
        echo "zip 命令不存在，请先安装zip命令"
        exit 1
    fi

    # 判断是否安装了docker
    if ! command -v docker &> /dev/null
    then
        echo "docker 命令不存在，请先安装docker"
        exit 1
    fi

    # 判断目录是否正确，如果不是在vue项目目录下，就退出
    if [ ! -f "package.json" ]; then
        echo "package.json 文件不存在，请检查目录是否正确！"
        exit 1
    fi

    dir=$(pwd)
}

function build(){
    wxbot 开始编译  jenkins正在编译panel项目，若有新的代码push请等编译技术后再次push http://192.168.31.66:8080
    echo "${GREEN}开始编译panel项目${NC}"
    echo "node版本：${nodeversion}"
    echo "项目目录：${dir}"
    sudo rm -rf admin2*

    # 开始编译之前，先删除掉客户报备相关功能代码
    sudo rm -rf src/views/report

    sudo docker run --rm -v $dir:/panel   node:$nodeversion  sh -c 'cd /panel  && npm config set registry http://mirrors.cloud.tencent.com/npm/  && npm install --silent && npm run build:prod'
    # 判断是否编译成功
    # 判断admin2文件夹是否存在,如果不存在，则跳过
    if [ ! -d "admin2" ]; then
        wxbot panel面板编译失败 请检查编译日志 192.168.31.66:8080
        echo "${RED}编译管理面板失败！请检查${NC}" &&  exit 1
    fi
    sudo zip -r admin2.zip admin2
    echo "编译完成，压缩包文件路径：${dir}/admin2.zip"
    # 复制一份到tmp目录备用
    sudo rm -rf /tmp/admin2
    sudo cp -r ./admin2 /tmp/
    wxbot udyk-panel 面板编译完成等待镜像制作 http://192.168.31.66:18080
}

function main(){
    init
    build
}

main
